The present invention relates generally to middleware services. More specifically, the invention relates to a method and system for transforming a process through middleware service injection in a selective manner dependent upon context information related to the process.
A key goal of distributed computing networks, such as the Internet, is to allow systems at different locations within the network to interact with each other. Such interaction is generally accomplished through message exchanges. An exchanged message is often a request or a response. A response is typically a reaction to a request.
Systems that include a distributed computing network may be heterogeneous. For example, such systems may include clients, service providers, or both. The systems may embody differing architectures, operating systems and behavior. Furthermore, the systems may impose differing extra-functional requirements upon interaction.
Extra-functional requirements frequently relate to security. For example, a system may require that the sender of a message be authenticated and may further require a specific method of authentication. A system may also require that a message be encrypted and may further require a specific method and/or level of encryption.
Extra-functional requirements also frequently relate to reliability. Common reliability requirements include guaranteed message delivery and transactionality. Guaranteed message delivery means ensuring the delivery of a message and detecting any failure to deliver the message. Transactionality means the encapsulation of multiple requests in a transaction that is atomic: either all requests in the transaction are executed, or none of the requests are executed.
Often times, two interaction partners will impose differing extra-functional requirements. Middleware services are commonly used in the art to comply with the extra-functional requirements on both sides, allowing the differing partners to interact.
Middleware services may achieve this goal by manipulating requests and/or responses so as to conform to extra-functional requirements. For example, a middleware service may encrypt and decrypt messages using an encryption protocol that meets the encryption requirements of the systems exchanging messages. Middleware services may also implement distributed protocols that meet given extra-functional requirements. For example, a middleware service may implement an authentication protocol that meets the security requirement of a certain system. A middleware service may also implement a guaranteed message delivery protocol or a transaction protocol. Middleware services may also provide interfaces for use by applications.
In middleware systems known in the art, extra-functional requirements are generally preconfigured using Application Programmer Interfaces (API's). This approach necessitates that the requirements are known at the time of system design. This in turn necessitates foreknowledge of the specific systems involved in interaction, as each system may impose differing extra-functional requirements. Frequently, however, this knowledge is not available at the time of system design.
Middleware functionality is commonly integrated into a message exchange using a technological device called an interceptor. An interceptor is applied within the message flow at one or more points. These points may be on either or both of the systems engaged in the message exchange. At each such point, the interceptor may manipulate the message flow and/or provide functionality.
Interceptor-based methods of implementing middleware functionality may apply to sending requests and receiving responses generally. Unfortunately, interceptor-based methods known in the art do not generally facilitate granular application of middleware functionality based upon message context. For example, such systems typically do not facilitate selectively applying middleware functionality for messages related to particular types of operations.